package com.tbs.app;

import com.tbs.EnableTbsAsync;
import com.tbs.EnableTbsBroadcast;
import com.tbs.EnableTbsLock;
import com.tbs.EnableTbsSchedule;
import com.tbs.broadcast.rabbitmq.EnableRabbbitMqSupport;
import com.tbs.common.annotation.UseCommonTool;
import com.tbs.redis.annotation.UseRedissonCacheMananger;
import com.tbs.sql.annotation.EnableTbsSqlUtils;
import com.tbs.sql.annotation.dialect.MYSQL;
import com.tbs.struct.tree.impl.EnableCloseureTreeImpl;
import com.tbs.view.route.annotation.EnableDefaultViewRouteImpl;
import com.tbs.web.annotation.EnableWebAuth;
import com.tbs.xxl.EnableXxlJob;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import tk.mybatis.spring.annotation.MapperScan;

/**
 * 启动类
 *
 * @author abstergo
 */

@SpringBootApplication
@UseCommonTool
@EnableWebAuth
@EnableDefaultViewRouteImpl
@EnableCloseureTreeImpl
@EnableTbsSqlUtils
@EnableTbsLock
@EnableTbsAsync
@EnableTbsBroadcast
@EnableTbsSchedule
@ComponentScan(basePackages = {"com.tbs.app", "com.tbs.shared"})
@EnableXxlJob
@EnableRabbbitMqSupport
@MYSQL
@MapperScan(basePackages = "com.tbs.shared.mapper")
@EntityScan({"com.tbs.shared.pojo.entity", "com.tbs.shared.pojo.entity.view"})
@EnableAspectJAutoProxy(exposeProxy = true)
@UseRedissonCacheMananger
@EnableDubbo

//@EnableTrace
public class AppApplication {

    public static void main(String[] args) {
        SpringApplication.run(AppApplication.class, args);
    }

}
